title: 犀利开发—jQuery内核详解与实践-5_事件封装机制与解析
date: 2018.1.8
addEventListener(type,function,useCapture)
$(document).ready(function(a){})//一个参数a—引用jQuery函数,并
JQuery(function($){})
$(function(){})
$(function(me){me(‘div’).text(‘jQ函数别名’)})//默认$,或jQuery
不能和原生的load同用
$(window).load()
load,第一次被第二次覆盖了
如果多个文件,ready可以无限多次调用
轻松实现多次调用load事件
function addLoadEvent(func){
var oldOnload=window.onload
if(typeof window.onload!=’function’){
window.onload=func
}else{
window.onload=function(){
oldOnload();
func()
}
}
}
原生比库执行效率更高(选择器,和事件模型)
load更好,不用担心兼容,且两者可以混合使用
浏览器兼容性很大差异的鼠标事件,jQ
DOMContentLoaded;IE,onreadystatechange–document.readyState===’complete’
注销,避免反复触发
针对IE,模拟DOMContentLoaded事件的方法:判断document是否可以滚动
DOMextend(“bind”,function(type,data,fn){
var _this=_this
if(_this.addEventListener){
_this.addEventListener(type,function(event){
event.datas=data
fn(event)
},false)
}else{
_this.attachEvent(“on”+type,function(){
var event=window.event
})
}
return _this
})
bind基础上添加注销行为
2018.1.12 星期五 00:11 P242